package com.example.smartf.service.impl;

import com.example.smartf.model.mongo.Group;
import com.example.smartf.model.mongo.User;
import com.example.smartf.model.mysql.Deviceinfo;
import com.example.smartf.repository.mongoDB.MongoGroupUtil;
import com.example.smartf.repository.mongoDB.MongoUserUtil;
import com.example.smartf.repository.mysql.DeviceinfoRepository;
import com.example.smartf.service.DevService;
import com.example.smartf.service.UserdevService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

@Service
public class UserdevServiceImpl implements UserdevService {
    //日志记录器
    Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private MongoUserUtil mongoUserUtil;
    @Autowired
    private MongoGroupUtil mongoGroupUtil;
    @Autowired
    private DeviceinfoRepository deviceinfoRepository;


    //查询用户有哪些设备
    public List<Deviceinfo> showUserDev(String username){
        if( null == username){
            return null;
        }
//        User user = mongoUserUtil.findByUsername(username);
//        System.out.println("username: "+ username);
//        List<Deviceinfo> list = new ArrayList<>();
//        String devids[] = user.getDevices();
//
//        System.out.println("user:" + user.toString());
//        System.out.println("devids :" + devids);
//        for(String devid : devids){
//            list.add(deviceinfoRepository.findByDeviceid(devid));
//        }
        //使用用户名查找到所在分组
        Group group = mongoGroupUtil.findGroupByusername(username);
        List<Deviceinfo> list = new ArrayList<>();
        if( null == group){
            return list;
        }
        //遍历分组内所有设备加入到list 中 并返回
        String[] devs = group.getDevices();
        for( String dev : devs){
            list.add(deviceinfoRepository.findByDeviceid(dev));
        }
        return list;
    }
//    //用户添加设备
//    public String addUserDev(String username,String deviceID, String kind,String devicename,String remarks){
//        Deviceinfo deviceinfo = deviceinfoRepository.findByDeviceid(deviceID);
//        if( null == deviceinfo ){
//            return "device not exsit";
//        }
//        if( deviceinfo.getStartday() != null ){
//            return "device is already in use";
//        }
//
//        //首先更改deviceinfo中设备起始时间
//        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//        String startday = df.format(new Date());
//        int res = deviceinfoRepository.changedeviceExtrainfo(deviceID,kind,startday,devicename,remarks);
//        if(res == 0){   //表示修改失败
//            return "device not exsit";
//        }
//        User user = mongoUserUtil.findByUsername(username);
//        List<String> newdevs = new ArrayList<>();
//
//        for(String devid : user.getDevices()){
//            newdevs.add(devid);
//        }
//        if(newdevs.contains(deviceID) == true){
//            logger.info("用户：" + username + " 添加设备：" + deviceID + " 设备已存在！");
//            return "has";
//        }
//        newdevs.add(deviceID);
//        String tmp[] = new String[newdevs.size()];
//        newdevs.toArray(tmp);
//        user.setDevices(tmp);
//        mongoUserUtil.updateUser(user);
//
//        //判断是否修改成功
//        if( Arrays.equals(user.getDevices(), mongoUserUtil.findByUsername(username).getDevices()) == true ){
//            logger.info("用户：" + username + " 添加设备：" + deviceID + " 成功！");
//            return "success";
//        }else{
//            logger.info("用户：" + username + " 添加设备：" + deviceID + " 失败！");
//            //若mongodb中用户拥有设备修改失败，则将deviceinfo设备 起始时间，设备暂用名，备注
//            deviceinfoRepository.changedeviceExtrainfo(deviceID,null,null,null,null);
//            return "failed";
//        }
//    }
//    //用户删除设备
//    public String delUserDev(String username,String deviceID){
//        User user = mongoUserUtil.findByUsername(username);
//        String devs[] = user.getDevices();
//        List<String> list = new ArrayList<>();
//        for(int i = 0;i < devs.length;i++){
//            if( deviceID != null && deviceID.equals(devs[i]) == false){
//                list.add(devs[i]);
//            }
//        }
//        if(list.size() == devs.length){
//            return "not has";
//        }
//        Deviceinfo tempdev = deviceinfoRepository.findByDeviceid(deviceID);
//        int res = deviceinfoRepository.changedeviceExtrainfo(deviceID,null,null,null,null);
//        if(res == 0){
//            return "device not exsit";
//        }
//
//        String tmp[] = new String[list.size()];
//        list.toArray(tmp);
//        user.setDevices(tmp);
//        mongoUserUtil.updateUser(user);
//        if(Arrays.equals(user.getDevices(), mongoUserUtil.findByUsername(username).getDevices()) == true){
//            logger.info("用户：" + username + " 删除设备：" + deviceID + " 成功！");
//            return "success";
//        }else{
//            logger.info("用户：" + username + " 删除设备：" + deviceID + " 失败！");
//            //保证一致性
//            deviceinfoRepository.changedeviceExtrainfo(deviceID,tempdev.getKind(),tempdev.getStartday(),tempdev.getDevicename(),tempdev.getRemarks());
//            return "failed";
//        }
//    }


}
